package org.code.mallspringboot.service;

import org.code.mallspringboot.dto.PmsAttributeDto;
import org.code.mallspringboot.pojo.PmsProductAttributeCategory;
import org.code.mallspringboot.pojo.PmsProductCategoryAttributeRelation;
import org.code.mallspringboot.vo.AttributeListVo;

import java.util.List;

public interface PmsProductAttributeCategoryService {

    /**
     * 属性筛选-查询全部
     *
     * @return
     */
    List<PmsProductAttributeCategory> selectAll();

    /**
     * 根据 PmsProductAttributeValue 表中的 product_category_id查询
     *
     * @return
     */
    List<PmsProductCategoryAttributeRelation> selectByproductCategoryId(int productCategoryId);

    /**
     * 查询商品类型+分页
     *
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<PmsProductAttributeCategory> selectPage(int pageNum, int pageSize);

    /**
     * 总条数
     *
     * @return
     */
    int total();

    /**
     * 商品类型-添加
     *
     * @param name
     * @return
     */
    int add(String name);

    /**
     * 商品类型-删除
     *
     * @param id
     * @return
     */
    int delete(int id);

    /**
     * 商品类型-修改
     *
     * @param id
     * @param name
     * @return
     */
    int update(int id, String name);

    /**
     * 商品类型-属性列表-分页
     *
     * @return
     */
    List<AttributeListVo> selectAttributePage(int id, int type, int pageNum, int pageSize);

    /**
     * 商品属性列表-总条数
     *
     * @param id
     * @return
     */
    int total2(int id, int type);

    /**
     * 商品属性添加
     *
     * @param pmsAttributeDto
     * @return
     */
    int add_attribute(PmsAttributeDto pmsAttributeDto);

    /**
     * 商品列表修改属性、参数数量
     *
     * @param pmsProductAttributeCategory
     * @return
     */
    int update_attribute(PmsProductAttributeCategory pmsProductAttributeCategory);

    /**
     * 修改商品属性/参数
     *
     * @param pmsAttributeDto
     * @return
     */
    int update_attribute2(PmsAttributeDto pmsAttributeDto);

    /**
     * 修改商品属性回显
     *
     * @param id
     * @return
     */
    PmsAttributeDto select_attributeById(int id);

    /**
     * 删除商品属性/参数
     *
     * @param id
     * @return
     */
    int delete_attribute(int id);

    /**
     * 通过id查找type
     *
     * @param id
     * @return
     */
    Integer select_attribute_type(int id);

    /**
     * 通过id查找type
     *
     * @param id
     * @return
     */
    Integer select_attribute_productAttributeCategoryId(int id);

    /**
     修改属性数量
     * @return
     */
    Integer update_attribute_count(int productAttributeCategoryId);

    /**
     修改参数数量
     * @return
     */
    Integer update_attribute_param_count(int productAttributeCategoryId);
}
